package com.woniuxy.producer.config.dlx;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * 生产者测试
 * 普通队列： normal-queue
 * 普通交换机： normal-exchange
 * 队列绑定到交换机： city.gz
 *
 * 死信队列： dlx-queue
 * 死信交换机： dlx-exchange
 * 死信队列绑定到死信交换机： dlx-routing-key
 */
@Configuration
public class RabbitDlxConfig {
    //1、配置 普通队列、普通交换机、队列绑定到交换机、
    @Bean
    public Queue normalQueue(){
        return QueueBuilder.durable("normal-queue")
                .deadLetterExchange("dlx-exchange") // 死信交换机
                .deadLetterRoutingKey("dlx-routing-key") //死信路由key
                .ttl(10 * 1000) //消息过期时间，可选参数，时间到加入死信队列
                .maxLength(3) //可选 超出消息数最先的加入死信队列
                .build();
    }
    @Bean
    public DirectExchange normalExchange(){
        return new DirectExchange("normal-exchange");
    }
    @Bean
    public Binding bindNormalQueueToExchange(Queue normalQueue,DirectExchange normalExchange){
        return BindingBuilder.bind(normalQueue).to(normalExchange).with("city.gz");
    }

    // 配置死信队列、死信交换机、死信路由key
    @Bean
    public Queue dlxQueue(){
        return QueueBuilder.durable("dlx-queue").build();
    }
    @Bean
    public DirectExchange dlxExchange() {
        return new DirectExchange("dlx-exchange");
    }
    @Bean
    public Binding bindDlxQueueToExchange(Queue dlxQueue,DirectExchange dlxExchange) {
        return BindingBuilder.bind(dlxQueue).to(dlxExchange).with("dlx-routing-key");
    }
}
